--- ../../swvox/swvox/csrc/include/data_spec_packed.cuh	2024-02-14 05:16:57.537407540 -0500
+++ ../google/swvox/swvox/csrc/include/data_spec_packed.cuh	2024-02-13 10:46:24.584645005 -0500
@@ -28,18 +28,20 @@
 #include "data_spec.hpp"
 
 template<class scalar_t>
-struct SingleRaySpec {
+struct SingleRaySpec2 {
     const scalar_t* __restrict__ origin;
     scalar_t* __restrict__ dir;
     const scalar_t* __restrict__ vdir;
+    const scalar_t* __restrict__ random_offset;
 };
 
 template<class scalar_t>
-struct PackedRaysSpec {
-    PackedRaysSpec(RaysSpec& ray) :
+struct PackedRaysSpecSwvox {
+    PackedRaysSpecSwvox(RaysSpecSwvox& ray) :
         origins(ray.origins.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()),
         vdirs(ray.vdirs.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()),
-        dirs(ray.dirs.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()) { }
+        dirs(ray.dirs.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()),
+        random_offset(ray.random_offset.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()) { }
 
     const torch::PackedTensorAccessor32<scalar_t, 2, torch::RestrictPtrTraits>
         origins;
@@ -47,9 +49,11 @@
         dirs;
     const torch::PackedTensorAccessor32<scalar_t, 2, torch::RestrictPtrTraits>
         vdirs;
+    const torch::PackedTensorAccessor32<scalar_t, 2, torch::RestrictPtrTraits>
+        random_offset;
 
-    SingleRaySpec<scalar_t> operator[](int32_t i) {
-        return SingleRaySpec<scalar_t>{&origins[i][0], &dirs[i][0], &vdirs[i][0]};
+    SingleRaySpec2<scalar_t> operator[](int32_t i) {
+      return SingleRaySpec2<scalar_t>{&origins[i][0], &dirs[i][0], &vdirs[i][0], &random_offset[i][0]};
     }
 };
 
@@ -62,6 +66,7 @@
         extra_data(tree.extra_data.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()),
         offset(tree.offset.data<scalar_t>()),
         scaling(tree.scaling.data<scalar_t>()),
+        max_depth(tree.max_depth.data<int32_t>()),
         weight_accum(tree._weight_accum.numel() > 0 ? tree._weight_accum.data<scalar_t>() : nullptr),
         weight_accum_max(tree._weight_accum_max)
      { }
@@ -76,13 +81,15 @@
         extra_data;
     const scalar_t* __restrict__ offset;
     const scalar_t* __restrict__ scaling;
+    const int32_t* __restrict__ max_depth;
+
     scalar_t* __restrict__ weight_accum;
     bool weight_accum_max;
 };
 
 template<class scalar_t>
-struct PackedCameraSpec {
-    PackedCameraSpec(CameraSpec& cam) :
+struct PackedCameraSpecSwvox {
+    PackedCameraSpecSwvox(CameraSpecSwvox& cam) :
         c2w(cam.c2w.packed_accessor32<scalar_t, 2, torch::RestrictPtrTraits>()),
         fx(cam.fx), fy(cam.fy), width(cam.width), height(cam.height) {}
     const torch::PackedTensorAccessor32<scalar_t, 2, torch::RestrictPtrTraits>
